package com.wy.excel.thread;

import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;

import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;

/**
 * EasyExcel工具类
 *
 * @author 飞花梦影
 * @date 2024-04-01 14:36:21
 * @git {@link https://github.com/dreamFlyingFlower}
 */
public class EasyExcelUtils {

	/**
	 * Excel导出的默认样式设置类
	 * 
	 * @return 格式
	 */
	public static HorizontalCellStyleStrategy getStyleStrategy() {
		// 头的策略
		WriteCellStyle headWriteCellStyle = new WriteCellStyle();
		// 背景设置为灰色
		headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
		WriteFont headWriteFont = new WriteFont();
		headWriteFont.setFontHeightInPoints((short) 12);
		// 字体样式
		headWriteFont.setFontName("Frozen");
		// 字体颜色
		headWriteFont.setColor(IndexedColors.BLACK1.getIndex());
		headWriteCellStyle.setWriteFont(headWriteFont);
		// 自动换行
		headWriteCellStyle.setWrapped(false);
		// 水平对齐方式(修改默认对齐方式——4.14 版本1.3.2)
		headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
		// 垂直对齐方式
		headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

		// 内容的策略
		WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
		// 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了
		// FillPatternType所以可以不指定
		// contentWriteCellStyle.setFillPatternType(FillPatternType.SQUARES);
		// 背景白色
		contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
		// 水平对齐方式(修改默认对齐方式——4.14 版本1.3.2)
		contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
		WriteFont contentWriteFont = new WriteFont();
		// 字体大小
		contentWriteFont.setFontHeightInPoints((short) 12);
		// 字体样式
		contentWriteFont.setFontName("Calibri");
		contentWriteCellStyle.setWriteFont(contentWriteFont);
		// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
		return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
	}
}